<?php


$id = intval($_POST['id']);
$query = mysql_query("select * from {$config['page']} where id = $id");
$row = mysql_fetch_assoc($query);

if (!$row) {
	throw new Exception("Запись, которую вы пытаетесь репостить не существует или уже была обработана");
}

if ($row['deleted']) {
	throw new Exception("Запись, которую вы пытаетесь репостить уже была удалена вами или кем-то другим");
}

if ($row['vk_reposted']) {
	throw new Exception("Запись, которую вы пытаетесь репостить уже было зарепосчена вами или кем-то другим");
}

// Формируем массив для отправки на ВК АПИ
$array = array('owner_id' => '-' . $config['groupId'], 'from_group' => 1);

// Если пост текстовый - добавляем текст поста
if (isset($_POST['text'])) {
	$array['message'] = $_POST['text'];
}

// Или добавляем описание к картинке, если оно введено
if (isset($_POST['image_text']) && $_POST['image_text']) {
	$array['message'] = $_POST['image_text'];
	if ($array['message'] == 'Дополнительное описание к картинке') {
		$array['message'] = null;
	}
}

// Если пост - картинка - добавляем аттач
if ((isset($row['post_type']) and $row['post_type'] == 'image') or isset($row['img_src'])) {
	$array['attachments'] = getAttachmentByRow($row);
}

// Если мы до этого отправляли капчу - добавляем введенные значения в массив
if (isset($_POST['captcha_sid']) && isset($_POST['captcha_key'])) {
	$array['captcha_sid'] = $_POST['captcha_sid'];
	$array['captcha_key'] = $_POST['captcha_key'];
}

// Делаем запрос на АПИ
$result = $config['client']->api('wall.post', $array);

// Если получаем в ответ капчу, то просим пользователя ее ввести
if (isset($result['error_code']) && ($result['error_code'] == 14)) {
	echo "<img src='{$result['captcha_img']}' />
	<form method='post'>
	<input type='hidden' name='captcha_sid' value='{$result['captcha_sid']}' />
	<input type='text' name='captcha_key' value='' autofocus='autofocus' />";

	if (isset($_POST['text'])) {
		echo "<textarea name='text'>{$_POST['text']}</textarea><br />";
	}
	
	if (isset($_POST['image_text'])) {
		echo "<input type='hidden' name='image_text' value='{$_POST['image_text']}' />";
	}
	
	if (isset($_POST['cut_px'])) {
		$pxx = intval($_POST['cut_px']);
		echo "<input type='hidden' name='cut_px' value='$pxx' />";
	}

	echo "<input type='hidden' name='id' value='$id' />
	<input type='submit' name='submit' />
	</form>";
} else {
	$id = intval($_POST['id']);
	mysql_query("update {$config['page']} set vk_reposted = 1 where id = $id");
	mysql_query("update user set repost_count = (repost_count + 1) where ext_id = {$config['user_id']}");
	redirect("Успешный репост");
}

/**
 * Берет картинку из поста на пикабу, отрезает вотермарк, 
 * заливает вконтакт и сохраняет идентификатор залитой картинки в базе.
 * 
 * @param array $row
 * @return string
 */
function getAttachmentByRow($row)
{
	global $config;

	// Проверяем, если ли у нас уже ID залитой на ВК картинки в базе
	// Если есть - сразу отдаем
	if ($row['image_url_vk']) {
		return $row['image_url_vk'];
	}

	// Скачиваем картинку в память
	$url = isset($row['image_url']) ? $row['image_url'] : $row['img_src'];
	$content = file_get_contents($url);

	// Сохраняем: ./tmp/1.jpg
	$id = $row['id'];
	$i = pathinfo($url);
	$tmpName = "./tmp/$id.{$i['extension']}";
	file_put_contents($tmpName, $content);
	$realpath = realpath($tmpName);

	// Обрабатываем кроппер.
	if (isset($_POST['sizes'])) {
		$croppedImages = array();
		foreach ($_POST['sizes'] as $key => $size) {
			preg_match('/(\d+)x(\d+),(\d+)/is', $size, $match);
			$dimension = $match[1] . 'x' . $match[2];
			$offset = $match[3];
			
			$im = substr($realpath, 0, -3) . "mcr.$key." . $i['extension'];
			
			$cmd = "convert -crop '$dimension+0+$offset' $realpath $im";
			exec($cmd);
			
			$croppedImages[] = $im;
		}
		
		//foreach ($croppedImages as $key => $ci) {
			//$croppedImages[$key] = str_replace('/home/clients/advsm_ftp0/domains/fucking-last.com/html', '', $ci);
			//echo "<img src='$ci' /><br />";
		//}
		//die();
	} else {
		// Если пришел параметр cut_px - отрезаем указанное количество пикселей
		$px = 0;
		$realpath2 = null;
		if (isset($_POST['cut_px']) && intval($_POST['cut_px'])) {
			$px = intval($_POST['cut_px']);
			$realpath2 = substr($realpath, 0, -3) . 'c.' . $i['extension'];
			$cmd = "convert -crop '100%x100%-0-$px!' $realpath $realpath2";
			exec($cmd);
		}
	
		if (!$realpath2) {
			$realpath2 = $realpath;
		}
		
		$croppedImages = array($realpath2);
	}
	
	
	// Заливаем картинки курлом
	$resultString = '';
	foreach ($croppedImages as $key => $im) {
		$client = $config['client'];
		$result = $client->api('photos.getWallUploadServer', array('gid' => $config['groupId']));
		$requestUrl = $result['upload_url'];
		$postParams['photo'] = "@$im";

		$ch = curl_init();
		curl_setopt($ch, CURLOPT_URL, $requestUrl);
		curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
		curl_setopt($ch, CURLOPT_POST, true);
		curl_setopt($ch, CURLOPT_POSTFIELDS, $postParams);
		$result = curl_exec($ch);
		curl_close($ch);

		// Получившийся json конвертим в обычный StdObject
		$result = json_decode($result);
		
		// Сохраняем картинку на стене ВК
		$fres = $client->api('photos.saveWallPhoto', array(
			'server' => $result->server,
			'photo' => $result->photo,
			'hash' => $result->hash,
			'gid' => $config['groupId'],
		));

		// В случае успеха получаем идентификатор картинки
		$resultString .= $fres[0]['id'];
		if ((count($croppedImages) - 1) != $key) $resultString .= ',';
		if (!$fres[0]['id']) {
			throw new Exception("Возникли какие-то проблемы с картинкой в разделе {$config['page']}, id {$row['id']}. Перешлите этот текст администратору, пожалуйста.");
		}
	}
	
	$trimmed = rtrim($resultString, ',');
	mysql_query("update {$config['page']} set image_url_vk='$trimmed' where id=$id");

	//var_dump($trimmed);die();

	return $trimmed;
}




